package website.seamonster.ethegg.contracts;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.DynamicArray;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint32;
import org.web3j.abi.datatypes.generated.Uint64;
import org.web3j.abi.datatypes.generated.Uint8;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple3;
import org.web3j.tuples.generated.Tuple5;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 3.5.0.
 */
public class EthEggTx_sol_EthEggTx extends Contract {
    private static final String BINARY = "60806040526001600855336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548160ff021916908360ff1602179055506063600c60006101000a81548160ff021916908360ff160217905550600a600b60008060ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550670de0b6b3a7640000600781905550620000e7620000ed640100000000026401000000009004565b6200015c565b6000600560009054906101000a900460ff1660ff16141562000118576007546006819055506200015a565b600560009054906101000a900460ff1660ff16600a0a600560009054906101000a900460ff1660ff1660090a600754028115156200015257fe5b046006819055505b565b613e33806200016c6000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063014e2817146100eb578063123f513c1461012257806314107f3c14610159578063270abf361461017c57806340c36524146101b357806346e827f5146101ea5780634daf490c1461021a5780635cacdf29146103a6578063606b77cb146103dd5780638da5cb5b1461047057806398d5fdca146104c7578063a30d59c9146104f2578063ee5200a11461051d578063f2fde38b14610589578063f550690e146105cc578063fda2a0001461060f575b600080fd5b3480156100f757600080fd5b50610120600480360381019080803567ffffffffffffffff1690602001909291905050506106d6565b005b34801561012e57600080fd5b506101376109a2565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b61017a600480360381019080803560ff1690602001909291905050506109f9565b005b34801561018857600080fd5b50610191611184565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156101bf57600080fd5b506101c861122c565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156101f657600080fd5b50610218600480360381019080803560ff16906020019092919050505061123c565b005b34801561022657600080fd5b5061022f61154e565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b83811015610282578082015181840152602081019050610267565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156102c45780820151818401526020810190506102a9565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103065780820151818401526020810190506102eb565b50505050905001868103835288818151815260200191508051906020019060200280838360005b8381101561034857808201518184015260208101905061032d565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561038a57808201518184015260208101905061036f565b505050509050019a505050505050505050505060405180910390f35b3480156103b257600080fd5b506103bb611d75565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156103e957600080fd5b5061040e600480360381019080803563ffffffff169060200190929190505050611dcc565b604051808463ffffffff1663ffffffff1681526020018360ff1660ff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b34801561047c57600080fd5b50610485611ed4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104d357600080fd5b506104dc611ef9565b6040518082815260200191505060405180910390f35b3480156104fe57600080fd5b50610507611f03565b6040518082815260200191505060405180910390f35b34801561052957600080fd5b50610532611f10565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561057557808201518184015260208101905061055a565b505050509050019250505060405180910390f35b34801561059557600080fd5b506105ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612002565b005b61060d600480360381019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612166565b005b34801561061b57600080fd5b50610644600480360381019080803567ffffffffffffffff169060200190929190505050612c79565b604051808667ffffffffffffffff1667ffffffffffffffff1681526020018560ff1660ff16815260200184600481111561067a57fe5b60ff1681526020018363ffffffff1663ffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f3430313a204f6e6c792074686520636f6e7472616374206f776e65722063616e81526020017f2063616c6c2074686973206d6574686f642e000000000000000000000000000081525060400191505060405180910390fd5b60006001805490501415156107d457600080fd5b80600b60008060ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600b6000600160ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002600b6000600160ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1602600b6000600260ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002600b6000600260ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1602600b6000600360ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002600b6000600360ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1602600b6000600460ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061099f60056032612e1d565b50565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905090565b6000806000806000808695503494508660ff166000108015610a1f5750600a8760ff1611155b1515610a2a57600080fd5b8560ff166008541015610b2a573373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015610a7d573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833866000600642604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a811115610af457fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a161117b565b8660ff16610b3661122c565b63ffffffff161015610c35573373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015610b88573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833866000600742604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a811115610bff57fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a161117b565b8660ff166006540285141515610d38573373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015610c8b573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833866000600842604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a811115610d0257fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a161117b565b60009350600560019054906101000a900467ffffffffffffffff1692505b6001805490508367ffffffffffffffff1610156110165760018367ffffffffffffffff16815481101515610d8657fe5b9060005260206000209060020201915060006004811115610da357fe5b610dcf8360000160099054906101000a900460ff168460000160089054906101000a900460ff16612f95565b6004811115610dda57fe5b1415610de557611016565b60028260000160096101000a81548160ff02191690836004811115610e0657fe5b02179055508160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050338260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860008154809291906001900391905055508073ffffffffffffffffffffffffffffffffffffffff166108fc600a600760065402811515610eb357fe5b049081150290604051600060405180830381858888f19350505050158015610edf573d6000803e3d6000fd5b50600a600360065402811515610ef157fe5b0484019350610f148183600001600a9054906101000a900463ffffffff16612fe9565b610f1d3361348f565b8580600190039650507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a881600a600760065402811515610f5957fe5b0484600001600a9054906101000a900463ffffffff1663ffffffff16600342604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a811115610fc657fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a160008660ff1611151561100957611016565b8280600101935050610d56565b8560ff168760ff16600560019054906101000a900467ffffffffffffffff160103600560016101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611067613724565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156110ce573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a83386888a0360ff16600142604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a81111561114957fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a15b50505050505050565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1603905090565b600061123733613982565b905090565b600080611247613d62565b600b60008060ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1660018054905010151561131d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f3430323a496e697420457468206567677320616c72656164792067656e65726181526020017f7465642e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600192505b8360ff168360ff16111580156113715750600b60008060ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1660018054905011155b15611535576001808054905001915060a0604051908101604052808367ffffffffffffffff168152602001600560009054906101000a900460ff1660ff168152602001600160048111156113c157fe5b8152602001600063ffffffff1681526020016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506001819080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548160ff021916908360ff16021790555060408201518160000160096101000a81548160ff021916908360048111156114b257fe5b0217905550606082015181600001600a6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050508280600101935050611322565b8360ff1660086000828254019250508190555050505050565b6060806060806060806060806060806000611567613dc6565b600060606000611575613d62565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561162a57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116115ed5790505b50505050509a5061163a33613b04565b61ffff1660405190808252806020026020018201604052801561166c5781602001602082028038833980820191505090505b50995061167833613b04565b61ffff166040519080825280602002602001820160405280156116aa5781602001602082028038833980820191505090505b5098506116b633613b04565b61ffff166040519080825280602002602001820160405280156116e85781602001602082028038833980820191505090505b5097506116f433613b04565b61ffff166040519080825280602002602001820160405280156117265781602001602082028038833980820191505090505b509650600095505b8a518663ffffffff161015611d5457600260018c8863ffffffff1681518110151561175557fe5b906020019060200201510363ffffffff1681548110151561177257fe5b90600052602060002001606060405190810160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050945060049350600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118e457602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff168152602001906008019060208260070104928301926001038202915080841161189f5790505b50505050509250600091505b82518267ffffffffffffffff161015611bf957600180848467ffffffffffffffff1681518110151561191e57fe5b906020019060200201510367ffffffffffffffff1681548110151561193f57fe5b906000526020600020906002020160a060405190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff1660ff1660ff1681526020016000820160099054906101000a900460ff1660048111156119c657fe5b60048111156119d157fe5b815260200160008201600a9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806060015163ffffffff16856000015163ffffffff161415611bec5760048460ff161415611acc57611a8d81604001518260200151612f95565b8a8763ffffffff16815181101515611aa157fe5b906020019060200201906004811115611ab657fe5b90816004811115611ac357fe5b81525050611be2565b60038460ff161415611b2957611aea81604001518260200151612f95565b898763ffffffff16815181101515611afe57fe5b906020019060200201906004811115611b1357fe5b90816004811115611b2057fe5b81525050611be1565b60028460ff161415611b8657611b4781604001518260200151612f95565b888763ffffffff16815181101515611b5b57fe5b906020019060200201906004811115611b7057fe5b90816004811115611b7d57fe5b81525050611be0565b60018460ff161415611bdf57611ba481604001518260200151612f95565b878763ffffffff16815181101515611bb857fe5b906020019060200201906004811115611bcd57fe5b90816004811115611bda57fe5b815250505b5b5b5b8380600190039450505b81806001019250506118f0565b5b60008460ff161115611d475760048460ff161415611c535760048a8763ffffffff16815181101515611c2857fe5b906020019060200201906004811115611c3d57fe5b90816004811115611c4a57fe5b81525050611d39565b60038460ff161415611ca0576004898763ffffffff16815181101515611c7557fe5b906020019060200201906004811115611c8a57fe5b90816004811115611c9757fe5b81525050611d38565b60028460ff161415611ced576004888763ffffffff16815181101515611cc257fe5b906020019060200201906004811115611cd757fe5b90816004811115611ce457fe5b81525050611d37565b60018460ff161415611d36576004878763ffffffff16815181101515611d0f57fe5b906020019060200201906004811115611d2457fe5b90816004811115611d3157fe5b815250505b5b5b5b838060019003945050611bfa565b858060010196505061172e565b8a9f50899e50889d50879c50869b5050505050505050505050509091929394565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905090565b6000806000611dd9613dc6565b60008563ffffffff16111515611dee57600080fd5b60026001860363ffffffff16815481101515611e0657fe5b90600052602060002001606060405190810160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015181602001518260400151935093509350509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b6000600160085403905090565b6060806000600180549050604051908082528060200260200182016040528015611f495781602001602082028038833980820191505090505b509150600090505b60018054905067ffffffffffffffff168167ffffffffffffffff161015611ffa5760018167ffffffffffffffff16815481101515611f8b57fe5b906000526020600020906002020160000160009054906101000a900467ffffffffffffffff16828267ffffffffffffffff16815181101515611fc957fe5b9060200190602002019067ffffffffffffffff16908167ffffffffffffffff16815250508080600101915050611f51565b819250505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f3430313a204f6e6c792074686520636f6e7472616374206f776e65722063616e81526020017f2063616c6c2074686973206d6574686f642e000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561216357806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008060008060008060008896503495508860ff16600010801561218e5750600a8960ff1611155b151561219957600080fd5b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156122c0573373ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015612213573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833876000600942604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a81111561228a57fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a1612c6e565b6000600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff161415612411573373ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015612364573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833876000600a42604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a8111156123db57fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a1612c6e565b8660ff166008541015612511573373ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015612464573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833876000600642604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a8111156124db57fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a1612c6e565b8860ff1661251d61122c565b63ffffffff16101561261c573373ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f1935050505015801561256f573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833876000600742604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a8111156125e657fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a1612c6e565b8860ff16600654028614151561271f573373ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015612672573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a833876000600842604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a8111156126e957fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a1612c6e565b6000945060009350600560019054906101000a900467ffffffffffffffff1692505b6001805490508367ffffffffffffffff161015612a175760018367ffffffffffffffff1681548110151561277157fe5b906000526020600020906002020191506000600481111561278e57fe5b6127ba8360000160099054906101000a900460ff168460000160089054906101000a900460ff16612f95565b60048111156127c557fe5b14156127d057612a17565b60028260000160096101000a81548160ff021916908360048111156127f157fe5b02179055508160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050338260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860008154809291906001900391905055508073ffffffffffffffffffffffffffffffffffffffff166108fc600a60076006540281151561289e57fe5b049081150290604051600060405180830381858888f193505050501580156128ca573d6000803e3d6000fd5b5060646008600654028115156128dc57fe5b048401935060646016600654028115156128f257fe5b04850194506129158183600001600a9054906101000a900463ffffffff16612fe9565b61291e3361348f565b8680600190039750507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a881600a60076006540281151561295a57fe5b0484600001600a9054906101000a900463ffffffff1663ffffffff16600342604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a8111156129c757fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a160008760ff16111515612a0a57612a17565b8280600101935050612741565b8660ff168960ff16600560019054906101000a900467ffffffffffffffff160103600560016101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612a68613724565b8773ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015612aae573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015612b16573d6000803e3d6000fd5b507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a88885898c0360ff16600442604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a811115612b9157fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a17f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a83387898c0360ff16600142604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a811115612c3c57fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a15b505050505050505050565b6000806000806000612c89613d62565b60008060008060008b67ffffffffffffffff16111515612ca857600080fd5b6001808c0367ffffffffffffffff16815481101515612cc357fe5b906000526020600020906002020160a060405190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff1660ff1660ff1681526020016000820160099054906101000a900460ff166004811115612d4a57fe5b6004811115612d5557fe5b815260200160008201600a9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050945084602001519350612df085604001518660200151612f95565b925084606001519150846080015190508a8484848499509950995099509950505050505091939590929450565b600060058360ff1610151515612e3257600080fd5b60328260ff1611151515612e4557600080fd5b6000600b60008560ff1660ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff16141515612e8b57600080fd5b8290505b8160ff168160ff161015612f90576000600b60008360ff1660ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161415612f8357600b60006005830360ff1660ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff166002600b60006001850360ff1660ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff160203600b60008360ff1660ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b8080600101915050612e8f565b505050565b6000600560009054906101000a900460ff1660ff168260ff16118015612fd1575060016004811115612fc357fe5b836004811115612fcf57fe5b145b15612fdf5760009050612fe3565b8290505b92915050565b600080600080612ff7613d62565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561305157613486565b60008663ffffffff16141561306557613486565b60026001870363ffffffff1681548110151561307d57fe5b90600052602060002001945060048560000160049054906101000a900460ff1660ff1610156133045784600001600481819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff16021790555050600180805490500193506130ed84613c6d565b92506001915060a0604051908101604052808567ffffffffffffffff1681526020018460ff16815260200183600481111561312457fe5b81526020018763ffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681525090506001819080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548160ff021916908360ff16021790555060408201518160000160096101000a81548160ff021916908360048111156131f357fe5b0217905550606082015181600001600a6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084908060018154018082558091505090600182039060005260206000209060049182820401919006600802909192909190916101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050613485565b60048560000160049054906101000a900460ff1660ff16141561348457600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff160217905550507f1c2e8231879486a5c901d464b38b4408600821576ddb11fd776edbdf27cc17a88560000160059054906101000a900473ffffffffffffffffffffffffffffffffffffffff168763ffffffff168760000160009054906101000a900463ffffffff1663ffffffff16600542604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183600a81111561345257fe5b60ff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019550505050505060405180910390a15b5b5b50505050505050565b6000613499613dc6565b8273ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613504575060006134fc84613982565b63ffffffff16115b1561371f5760016002805490500191506060604051908101604052808363ffffffff168152602001600060ff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815250905060028190806001815401808255809150509060018203906000526020600020016000909192909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548160ff021916908360ff16021790555060408201518160000160056101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff16021790555050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff1602179055505061371e8383612fe9565b5b505050565b60008061372f613d62565b6000613739611f03565b141561397d576005600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff1602179055505060009250600560019054906101000a900467ffffffffffffffff1691505b6001805490508267ffffffffffffffff16101561394e5760018267ffffffffffffffff168154811015156137bf57fe5b906000526020600020906002020160a060405190810160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160089054906101000a900460ff1660ff1660ff1681526020016000820160099054906101000a900460ff16600481111561384657fe5b600481111561385157fe5b815260200160008201600a9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600060048111156138e057fe5b6138f282604001518360200151612f95565b60048111156138fd57fe5b14156139085761394e565b6001600481111561391557fe5b61392782604001518360200151612f95565b600481111561393257fe5b14156139415782806001019350505b818060010192505061378f565b8267ffffffffffffffff1660085401600881905550600061396d611f03565b111561397c5761397b613cf6565b5b5b505050565b600080600c60009054906101000a900460ff1660ff169050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff160363ffffffff168163ffffffff16101515613af957600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff160381039150613afe565b600091505b50919050565b600080600080613b12613dc6565b6002805490509350600092508391505b6000826fffffffffffffffffffffffffffffffff161115613c61576002600183036fffffffffffffffffffffffffffffffff16815481101515613b6157fe5b90600052602060002001606060405190810160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806040015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415613c535782806001019350505b818060019003925050613b22565b82945050505050919050565b60008060008367ffffffffffffffff169150600090505b60318160ff16111515613cec57600b60008260ff1660ff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff1682039150600082600f0b131515613cdf57613cec565b8080600101915050613c84565b8092505050919050565b6000600560009054906101000a900460ff1660ff161415613d1f57600754600681905550613d60565b600560009054906101000a900460ff1660ff16600a0a600560009054906101000a900460ff1660ff1660090a60075402811515613d5857fe5b046006819055505b565b60a060405190810160405280600067ffffffffffffffff168152602001600060ff16815260200160006004811115613d9657fe5b8152602001600063ffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b606060405190810160405280600063ffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905600a165627a7a723058206a686fb5adbe2f0ce68da5aec506795eb3f0bd3af29bda33e4da555f1ca5c3800029";

    public static final String FUNC_INITPARAMS = "initParams";

    public static final String FUNC_TESTDEADCHICKENCNT = "testDeadChickenCnt";

    public static final String FUNC_BUY = "buy";

    public static final String FUNC_GETCHICKENAMOUNT = "getChickenAmount";

    public static final String FUNC_GETFREEHATCHCNT = "getFreeHatchCnt";

    public static final String FUNC_INITEGGS = "initEggs";

    public static final String FUNC_GETFARM = "getFarm";

    public static final String FUNC_TESTCHICKENCNT = "testChickenCnt";

    public static final String FUNC_TESTCHICKENINFO = "testChickenInfo";

    public static final String FUNC_OWNER = "owner";

    public static final String FUNC_GETPRICE = "getPrice";

    public static final String FUNC_GETEGGSCOUNT = "getEggsCount";

    public static final String FUNC_TESTEGGIDS = "testEggIds";

    public static final String FUNC_TRANSFEROWNERSHIP = "transferOwnership";

    public static final String FUNC_BUYWITHPR = "buyWithPr";

    public static final String FUNC_TESTEGGINFO = "testEggInfo";

    public static final Event MESSAGE_EVENT = new Event("Message",
            Arrays.<TypeReference<?>>asList(),
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint8>() {}, new TypeReference<Uint64>() {}));
    ;

    public static final Event DEBUGBUY_EVENT = new Event("DebugBuy",
            Arrays.<TypeReference<?>>asList(),
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint64>() {}, new TypeReference<Uint8>() {}, new TypeReference<Uint32>() {}));
    ;

    protected EthEggTx_sol_EthEggTx(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected EthEggTx_sol_EthEggTx(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public RemoteCall<TransactionReceipt> initParams(BigInteger _alphaEggCnt) {
        final Function function = new Function(
                FUNC_INITPARAMS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint64(_alphaEggCnt)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<BigInteger> testDeadChickenCnt() {
        final Function function = new Function(FUNC_TESTDEADCHICKENCNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> buy(BigInteger _buyCount, BigInteger weiValue) {
        final Function function = new Function(
                FUNC_BUY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint8(_buyCount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteCall<BigInteger> getChickenAmount() {
        final Function function = new Function(FUNC_GETCHICKENAMOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<BigInteger> getFreeHatchCnt() {
        final Function function = new Function(FUNC_GETFREEHATCHCNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<TransactionReceipt> initEggs(BigInteger _genAmount) {
        final Function function = new Function(
                FUNC_INITEGGS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint8(_genAmount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Tuple5<List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>>> getFarm() {
        final Function function = new Function(FUNC_GETFARM, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint32>>() {}, new TypeReference<DynamicArray<Uint8>>() {}, new TypeReference<DynamicArray<Uint8>>() {}, new TypeReference<DynamicArray<Uint8>>() {}, new TypeReference<DynamicArray<Uint8>>() {}));
        return new RemoteCall<Tuple5<List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>>>(
                new Callable<Tuple5<List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>>>() {
                    @Override
                    public Tuple5<List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple5<List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>, List<BigInteger>>(
                                convertToNative((List<Uint32>) results.get(0).getValue()), 
                                convertToNative((List<Uint8>) results.get(1).getValue()), 
                                convertToNative((List<Uint8>) results.get(2).getValue()), 
                                convertToNative((List<Uint8>) results.get(3).getValue()), 
                                convertToNative((List<Uint8>) results.get(4).getValue()));
                    }
                });
    }

    public RemoteCall<BigInteger> testChickenCnt() {
        final Function function = new Function(FUNC_TESTCHICKENCNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<Tuple3<BigInteger, BigInteger, String>> testChickenInfo(BigInteger _chickenId) {
        final Function function = new Function(FUNC_TESTCHICKENINFO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint32(_chickenId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}, new TypeReference<Uint8>() {}, new TypeReference<Address>() {}));
        return new RemoteCall<Tuple3<BigInteger, BigInteger, String>>(
                new Callable<Tuple3<BigInteger, BigInteger, String>>() {
                    @Override
                    public Tuple3<BigInteger, BigInteger, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<BigInteger, BigInteger, String>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (String) results.get(2).getValue());
                    }
                });
    }

    public RemoteCall<String> owner() {
        final Function function = new Function(FUNC_OWNER, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<BigInteger> getPrice() {
        final Function function = new Function(FUNC_GETPRICE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<BigInteger> getEggsCount() {
        final Function function = new Function(FUNC_GETEGGSCOUNT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<List> testEggIds() {
        final Function function = new Function(FUNC_TESTEGGIDS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint64>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> transferOwnership(String newOwner) {
        final Function function = new Function(
                FUNC_TRANSFEROWNERSHIP, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(newOwner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> buyWithPr(BigInteger _buyCount, String _prUser, BigInteger weiValue) {
        final Function function = new Function(
                FUNC_BUYWITHPR, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint8(_buyCount), 
                new org.web3j.abi.datatypes.Address(_prUser)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function, weiValue);
    }

    public RemoteCall<Tuple5<BigInteger, BigInteger, BigInteger, BigInteger, String>> testEggInfo(BigInteger _eggId) {
        final Function function = new Function(FUNC_TESTEGGINFO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint64(_eggId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint64>() {}, new TypeReference<Uint8>() {}, new TypeReference<Uint8>() {}, new TypeReference<Uint32>() {}, new TypeReference<Address>() {}));
        return new RemoteCall<Tuple5<BigInteger, BigInteger, BigInteger, BigInteger, String>>(
                new Callable<Tuple5<BigInteger, BigInteger, BigInteger, BigInteger, String>>() {
                    @Override
                    public Tuple5<BigInteger, BigInteger, BigInteger, BigInteger, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple5<BigInteger, BigInteger, BigInteger, BigInteger, String>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (BigInteger) results.get(3).getValue(), 
                                (String) results.get(4).getValue());
                    }
                });
    }

    public List<MessageEventResponse> getMessageEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(MESSAGE_EVENT, transactionReceipt);
        ArrayList<MessageEventResponse> responses = new ArrayList<MessageEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            MessageEventResponse typedResponse = new MessageEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse._to = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse._val1 = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse._val2 = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse._msgType = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse._msgTime = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<MessageEventResponse> messageEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, MessageEventResponse>() {
            @Override
            public MessageEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(MESSAGE_EVENT, log);
                MessageEventResponse typedResponse = new MessageEventResponse();
                typedResponse.log = log;
                typedResponse._to = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse._val1 = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse._val2 = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
                typedResponse._msgType = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
                typedResponse._msgTime = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<MessageEventResponse> messageEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(MESSAGE_EVENT));
        return messageEventObservable(filter);
    }

    public List<DebugBuyEventResponse> getDebugBuyEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(DEBUGBUY_EVENT, transactionReceipt);
        ArrayList<DebugBuyEventResponse> responses = new ArrayList<DebugBuyEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            DebugBuyEventResponse typedResponse = new DebugBuyEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse._to = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse._from = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse._balance = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse._eggId = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse._eggStatus = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            typedResponse._chickenId = (BigInteger) eventValues.getNonIndexedValues().get(5).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<DebugBuyEventResponse> debugBuyEventObservable(EthFilter filter) {
        return web3j.ethLogObservable(filter).map(new Func1<Log, DebugBuyEventResponse>() {
            @Override
            public DebugBuyEventResponse call(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(DEBUGBUY_EVENT, log);
                DebugBuyEventResponse typedResponse = new DebugBuyEventResponse();
                typedResponse.log = log;
                typedResponse._to = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse._from = (String) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse._balance = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
                typedResponse._eggId = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
                typedResponse._eggStatus = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
                typedResponse._chickenId = (BigInteger) eventValues.getNonIndexedValues().get(5).getValue();
                return typedResponse;
            }
        });
    }

    public Observable<DebugBuyEventResponse> debugBuyEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(DEBUGBUY_EVENT));
        return debugBuyEventObservable(filter);
    }

    public static RemoteCall<EthEggTx_sol_EthEggTx> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(EthEggTx_sol_EthEggTx.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    public static RemoteCall<EthEggTx_sol_EthEggTx> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(EthEggTx_sol_EthEggTx.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static EthEggTx_sol_EthEggTx load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new EthEggTx_sol_EthEggTx(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    public static EthEggTx_sol_EthEggTx load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new EthEggTx_sol_EthEggTx(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static class MessageEventResponse {
        public Log log;

        public String _to;

        public BigInteger _val1;

        public BigInteger _val2;

        public BigInteger _msgType;

        public BigInteger _msgTime;
    }

    public static class DebugBuyEventResponse {
        public Log log;

        public String _to;

        public String _from;

        public BigInteger _balance;

        public BigInteger _eggId;

        public BigInteger _eggStatus;

        public BigInteger _chickenId;
    }
}
